Skip to content

Add issue templates, community docs, and OSS-ready documentation#123

Merged
behinddwalls merged 5 commits into
mainfrom
preetam/issue-template
Mar 6, 2026
Merged

Add issue templates, community docs, and OSS-ready documentation#123
behinddwalls merged 5 commits into
mainfrom
preetam/issue-template

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Mar 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add GitHub issue templates (bug report, feature request) with structured fields
  • Add CODE_OF_CONDUCT.md (Contributor Covenant) and CONTRIBUTING.md (workflow, PR guidelines)
  • Rewrite README.md with badges, expanded description, quick start, and documentation table
  • Expand doc/howto/DEVELOPMENT.md with "Try It Locally" section, IDE setup, make targets reference, and troubleshooting
  • Remove SECURITY.md, CLA section, and redundant setup verification steps

Test plan

  • Verify all internal doc links resolve correctly on the PR preview
  • Confirm badge URLs render on GitHub
  • Read through each file as a first-time visitor for clarity

…ine README

Add community contribution infrastructure: bug report and feature request
issue templates, CONTRIBUTING.md, and CODE_OF_CONDUCT.md (Contributor
Covenant v1.4). Streamline README from 463 lines to a concise entry point
that links to CLAUDE.md, CONTRIBUTING.md, and TESTING.md, fixing broken
links and inaccuracies.
Remove redundant Proto Changes and Adding Extensions sections from
CONTRIBUTING.md (covered by CLAUDE.md). Move shell config to
doc/howto/SHELL.md. Reorder sections so developer setup comes before
Code of Conduct/License. Remove Code of Conduct and License from
README since they live in CONTRIBUTING.md.
Add high-level SubmitQueue overview to README synthesized from the
EuroSys '19 paper. Move development setup and troubleshooting from
CONTRIBUTING.md to doc/howto/DEVELOPMENT.md. Slim down CONTRIBUTING.md
to focus on contribution guidelines only.
Simplify README overview to a single paragraph, use 'speculative merge
queue' instead of 'change management system', remove paper reference
and specific build step assumptions. Rename Architecture to Developer
Guide. Move shell config from CONTRIBUTING.md to DEVELOPMENT.md, add
links to TESTING.md and SHELL.md from DEVELOPMENT.md, fix issues link
in CONTRIBUTING.md.
@behinddwalls behinddwalls requested review from a team and sbalabanov as code owners March 6, 2026 04:44
Comment thread doc/howto/DEVELOPMENT.md Outdated
@behinddwalls behinddwalls force-pushed the preetam/issue-template branch from 1126021 to b10e5f1 Compare March 6, 2026 18:15
@behinddwalls behinddwalls added this pull request to the merge queue Mar 6, 2026
Merged via the queue into main with commit da4a807 Mar 6, 2026
8 checks passed
albertywu added a commit that referenced this pull request May 29, 2026
Adds a read-only Status RPC to the gateway that returns the current
customer-friendly status of a previously submitted request, reconciled
from the append-only request log via
core/request.GetCurrentStateFromRequestLog. Status is a free-form string
(statuses can be added without breaking clients); unknown sqids map to a
typed RequestNotFoundError (user error) and empty sqids to ErrInvalidRequest.

Named "Status" to match the gateway's short RPC naming (Ping, Land, Status).

Changes:
- gateway/proto/gateway.proto: Status RPC, StatusRequest/StatusResponse, and
  RequestNotFoundError messages (regenerated protopb)
- gateway/controller/status.go: StatusController + tests
- example/server/gateway/main.go: wire controller (reuses existing RequestLogStore)

Validation:
- Unit tests: bazel test //gateway/controller:controller_test  (PASS)
- Integration (local stack): make local-gateway-start
  PORT=$(docker port submitqueue-gateway-service-1 8080 | head -1 | cut -d: -f2)

  # method is registered
  grpcurl -plaintext localhost:$PORT list uber.submitqueue.gateway.SubmitQueueGateway
    -> Land, Ping, Status

  # seed a request
  grpcurl -plaintext -d '{"queue":"test-queue","change":{"uris":["github:///pull/123/c3a4d5e6f7890123456789abcdef0123456789ab"]}}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Land
    -> { "sqid": "test-queue/1" }

  # happy path
  grpcurl -plaintext -d '{"sqid":"test-queue/1"}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Status
    -> { "status": "accepted" }

  # unknown sqid
  grpcurl -plaintext -d '{"sqid":"test-queue/999"}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Status
    -> ERROR: request not found for sqid "test-queue/999"

  # empty sqid
  grpcurl -plaintext -d '{"sqid":""}' \
    localhost:$PORT uber.submitqueue.gateway.SubmitQueueGateway/Status
    -> ERROR: StatusController requires the request to have a sqid specified: invalid request

Co-authored-by: Cursor <cursoragent@cursor.com>
@behinddwalls behinddwalls deleted the preetam/issue-template branch June 12, 2026 15:37
roychying added a commit to roychying/submitqueue that referenced this pull request Jul 2, 2026
…for go-code compatibility (uber#293)

<!-- Provide a summary in the Title above. Example: "Feature: add user
authentication" -->

## Why?
We want the smoothest DX for consuming the OSS submitqueue repo in
go-code. Today go-code's `go_repository` uses `build_file_generation =
"on"`, so its Gazelle regenerates BUILD files for the vendored repo.
This causes conflicts and mismatches, and every version bump risks new
patching.

The root issue is that OSS carries proto types twice: as checked-in
`.pb.go` in `protopb/`, and as Bazel-generated code via
`go_proto_library` in `proto/`. Removing the Bazel proto rules in favor
of the checked-in `.pb.go` fixes several things at once:

- Eliminates duplicate proto definitions. The two generation paths share
the same importpath, which caused the duplicate-importpath ambiguity and
forced the `gazelle:resolve` workarounds. Collapsing to a single source
removes that whole class of conflict.
- Serves non-Bazel consumers. The Bazel-generated code only exists
inside a Bazel build graph. Anyone consuming submitqueue via plain `go
build/go get` (including OSS users) can only use the checked-in .pb.go,
so that path must work regardless. The Bazel proto rules are a redundant
second path that serves no one the checked-in files don't already serve.

## What?
Disable Gazelle proto rule generation and remove all proto compilation
rules, relying solely on checked-in `.pb.go` files.

- Add `# gazelle:proto disable_global` to prevent Gazelle from
regenerating proto rules on future make gazelle runs
- Remove the `gazelle:resolve directives` that are no longer needed
- Remove `proto_library`, `go_proto_library`, and alias `go_library`
rules
- Keep `exports_files` for `make proto` codegen
(`tool/proto/BUILD.bazel`)

## Test Plan
- `make build` - pass
- `make test` - 65/65 unit tests pass (integration/e2e tests fail due to
Docker dependency, pre-existing)
- `bazel build //tool/proto:generated` - proto codegen still works
- `make gazelle` - zero warnings, no duplicate-importpath ambiguity
- Validated in go-code with `--override_repository` pointing at this
branch: all 71 targets build, all 20 tests pass across stovepipe,
submitqueue/gateway, and submitqueue/orchestrator

## Issue
<!-- 
Link the issue here. 
- Use 'Closes uber#123' if this is the final fix. 
- Use 'Part of uber#123' or just 'uber#123' if the feature is still in progress.
-->

---------

Co-authored-by: chenghan.ying <chenghan.ying@uber.com>
behinddwalls pushed a commit that referenced this pull request Jul 7, 2026
Adopt go_default_library naming convention for Bazel targets 

## Why?
The internal go-code monorepo consumes this repo via Bazel with
`build_file_generation = "off"` - it uses the checked-in `BUILD.bazel`
files **directly** instead of regenerating them. go-code's gazelle
enforces the`go_default_library` naming convention for all external
repos globally (`# gazelle:go_naming_convention_external
go_default_library`), so every dependency label it writes points at
`:go_default_library`. For go-code to reference this repo's targets
without per-import fixups, our targets must be reachable as
`:go_default_library`.

This complements the proto-disable change
(#293): together they let
go-code build this repo out of the box on Bazel 8.5.1 (which removed
`native.java_proto_library`, breaking `proto_library`).

## What?
- Add `# gazelle:go_naming_convention go_default_library` to the root
`BUILD.bazel` and regenerate target names via gazelle:
libraries/binaries ->`go_default_library`, tests -> `go_default_test`;
external refs normalize to `:go_default_library`.
- Manually migrate hand-authored, custom-named test targets that gazelle
cannot rename across a convention change:
- 9 integration/e2e `go_test` targets - `go_default_test` (`data`/`tags`
preserved once the name matches the convention),
- remove the redundant `platform/consumer:consumer_test` (gazelle now
emits `go_default_test` for that package),
  - point the `Makefile` integration-test targets at `:go_default_test`.
- Drop redundant `# keep`-pinned short-name `protopb` deps - under the
new convention the `:go_default_library` equivalents are emitted beside
them, so the short-name `:protopb` labels are dangling.

## Test Plan
- `make gazelle` - clean and idempotent (no duplicate-rule errors).
- `make build` -  223 targets built.
- `make test` -  65/65 unit tests pass.
- Verified downstream consumption from go-code with
`build_file_generation="off"`
  by overriding the module at this branch:
  bazel test //src/.../submitqueue/{gateway,orchestrator,stovepipe}/...
--override_repository=com_github_uber_submitqueue=/path/to/submitqueue
  -  71 targets build, 20/20 consumer tests pass.


## Issue
<!-- 
Link the issue here. 
- Use 'Closes #123' if this is the final fix. 
- Use 'Part of #123' or just '#123' if the feature is still in progress.
-->

Co-authored-by: chenghan.ying <chenghan.ying@uber.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants